﻿Imports Controle
Public Class frmHistVisita

#Region "Variáveis"
    Dim prvIDHistorico As Int32
    Dim prvIDCliente As Int32
    Dim prvIDContato As Int32
    Dim prvDataVisita As Date

    Private sMensagemValidacao As String = ""

    Dim objClientes As New ctrCliente
    Dim objContatos As New ctrContato
    Dim objVisitas As New ctrVisita
#End Region

#Region "Métodos Privados"
    Private Function ValidarFormulario() As Boolean
        Dim bRetorno As Boolean = True
        Dim sMsg As String
        sMensagemValidacao = ""

        Try

            If (Not VerificaSeDiaUtil(CDate(dtData.Text))) Then
                sMsg = "A data informada não é um dia útil. Deseja gravar o histórico a visita?"
                If (MsgBox(sMsg, MsgBoxStyle.YesNo, "Atenção") = MsgBoxResult.No) Then
                    Return False
                    Exit Function
                End If
            End If

            If (prvIDCliente = 0) Then
                sMensagemValidacao = "- Cliente não informado." & vbCrLf
                bRetorno = False
            End If

            If (prvIDContato = 0) Then
                sMensagemValidacao &= "- Contato não informado." & vbCrLf
                bRetorno = False
            End If

            If (txtObservacoes.Text = String.Empty) Then
                sMensagemValidacao &= "- Observações da visita não informadas." & vbCrLf
                bRetorno = False
            End If

            Return bRetorno
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try

    End Function
#End Region

#Region "Propriedades"

    Public Property IDCliente()
        Get
            Return prvIDCliente
        End Get
        Set(ByVal value)
            prvIDCliente = value
        End Set
    End Property
    Public Property IDContato()
        Get
            Return prvIDContato
        End Get
        Set(ByVal value)
            prvIDContato = value
        End Set
    End Property
    Public Property DataVisita()
        Get
            Return prvDataVisita
        End Get
        Set(ByVal value)
            prvDataVisita = value
        End Set
    End Property

#End Region

#Region "Métodos publicos"

    Public Sub CarregarDados()

        Try
            If (prvIDCliente > 0) Then
                txtIDCliente.Text = prvIDCliente
                txtNomeCliente.Text = objClientes.selecionarCliente(prvIDCliente).Item("RazaoSocial")

                If (prvIDContato > 0) Then
                    txtIDContato.Text = prvIDContato
                    txtContato.Text = objContatos.retornarCampoContato("NomeContato", prvIDContato).Item("NomeContato")
                End If
                If (prvDataVisita <> Date.MinValue) Then
                    dtData.Text = prvDataVisita
                End If

                MyBase.modoAtual = eModo.eEditar
            End If

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try

    End Sub

#End Region

    Private Sub cmdProcura_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdProcura.Click
        Dim sql As String
        Dim frmDialogo As New frmPesquisa

        Try
            sql = Me.objClientes.SqlConsulta(False)

            prvIDCliente = 0
            prvIDContato = 0

            Limpar(Me)

            With frmDialogo
                .Campos = "iIDCliente,sRazaoSocial"
                .Descricoes = "Código,Cliente"
                .Larguras = "50,300"
                .Sql = sql
                .Titulo = "Pesquisa Cliente"
                .CarregaTela()
                If .DS.Tables(0).Rows.Count > 0 Then
                    .ShowDialog()
                    If (.DialogResult = Windows.Forms.DialogResult.OK) Then
                        Me.prvIDCliente = .Id
                        txtIDCliente.Text = Me.prvIDCliente
                        txtNomeCliente.Text = objClientes.selecionarCliente(prvIDCliente).Item("RazaoSocial").ToString
                        Me.modoAtual = eModo.eEditar
                    End If
                Else
                    MsgBox("Registro não encontrado", MsgBoxStyle.Exclamation, Me.Text)
                    Me.prvIDCliente = 0
                    MyBase.Limpar(Me)
                    Exit Sub
                End If

            End With

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try
    End Sub

    Private Sub cmdProcuraContato_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdProcuraContato.Click
        Dim sql As String
        Dim frmDialogo As New frmPesquisa
        Dim sNomeContato As String

        Try

            If (prvIDCliente > 0) Then
                sql = Me.objContatos.sqlConsulta(prvIDCliente)

                With frmDialogo
                    .Campos = "iIDContato,sNomeContato"
                    .Descricoes = "Código,Nome"
                    .Larguras = "50,300"

                    .Sql = sql
                    .Titulo = "Pesquisa Contato"
                    .CarregaTela()
                    If .DS.Tables(0).Rows.Count > 0 Then
                        .ShowDialog()
                        If (.DialogResult = Windows.Forms.DialogResult.OK) Then
                            Me.prvIDContato = .Id
                            sNomeContato = objContatos.selecionarContato(prvIDContato, prvIDCliente, False). _
                                              Tables("DC_Contatos").Rows(0).Item("NomeContato").ToString
                            txtContato.Text = sNomeContato
                            txtIDContato.Text = prvIDContato
                            Me.modoAtual = eModo.eEditar
                        End If
                    Else
                        MsgBox("Registro não encontrado", MsgBoxStyle.Exclamation, Me.Text)
                        Me.prvIDCliente = 0
                        MyBase.Limpar(Me)
                        Exit Sub
                    End If

                End With
            Else
                MsgBox("Cliente não selecionado.", MsgBoxStyle.Information, Me.Text)

            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try
    End Sub

    Private Sub cmdGravar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGravar.Click
        Dim bResultado As Boolean
        Try

            If (Me.ValidarFormulario) Then

                bResultado = (objVisitas.SalvarHistoricoVisita(prvIDHistorico, prvIDCliente, prvIDContato, txtObservacoes.Text.ToString, _
                                                               dtData.Text))

            Else
                If (Me.sMensagemValidacao <> String.Empty) Then
                    MsgBox(Me.sMensagemValidacao, MsgBoxStyle.Exclamation, Me.Text)
                End If

                bResultado = False
            End If

            If (bResultado) Then
                MyBase.modoAtual = eModo.eAguardar
            Else
                Me.cmdCancelar.Text = "Cancelar"
            End If

        Catch ex As Exception
            MyBase.modoAtual = eModo.eEditar
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try
    End Sub

    Private Sub frmHistVisita_alteraModo(ByVal eModoAtual As frmPadrao.eModo) Handles Me.alteraModo

        If (eModoAtual = eModo.eAguardar Or eModoAtual = eModo.eExcluir) Then
            Me.txtIDCliente.Enabled = False
            Me.txtNomeCliente.Enabled = False
            Me.cmdProcura.Enabled = False
            Me.txtObservacoes.Enabled = False
            Me.txtIDContato.Enabled = False
            Me.txtContato.Enabled = False
            dtData.Enabled = False
            cmdProcuraContato.Enabled = False
            cmdEditarCliente.Enabled = False
            cmdEditarContato.Enabled = False
            cmdLimparCliente.Enabled = False
            cmdLimparContato.Enabled = False

        Else
            Me.txtIDCliente.Enabled = True
            Me.txtNomeCliente.Enabled = True
            Me.cmdProcura.Enabled = True
            Me.txtObservacoes.Enabled = True
            Me.txtIDContato.Enabled = True
            Me.txtContato.Enabled = True
            dtData.Enabled = True
            cmdProcuraContato.Enabled = (Me.prvIDCliente > 0)
            cmdEditarCliente.Enabled = (Me.prvIDCliente > 0)
            cmdEditarContato.Enabled = (Me.prvIDContato > 0)
            cmdLimparCliente.Enabled = (Me.prvIDCliente > 0)
            cmdLimparContato.Enabled = (Me.prvIDContato > 0)

        End If

    End Sub

    Private Sub frmHistVisita_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Me.modoAtual = eModo.eAguardar
        Call CarregarDados()

    End Sub

    Private Sub cmdEditarContato_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEditarContato.Click
        Dim frmContatos As New frmContato2
        With frmContatos
            .IDCliente = Me.prvIDCliente
            .IDContato = Me.prvIDContato
            .NomeCliente = txtNomeCliente.Text
            If (.ShowDialog() = Windows.Forms.DialogResult.OK) Then
                CarregarDados()
            End If

        End With
    End Sub

    Private Sub cmdLimparCliente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLimparCliente.Click

        prvIDCliente = 0
        Limpar(Me)
        Me.modoAtual = eModo.eEditar

    End Sub

    Private Sub cmdLimparContato_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLimparContato.Click

        prvIDContato = 0
        txtIDContato.Text = String.Empty
        txtContato.Text = String.Empty
        Me.modoAtual = eModo.eEditar

    End Sub

    Private Sub cmdEditarCliente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEditarCliente.Click
        Dim frmTelaCliente As New frmCliente

        With frmTelaCliente
            .IDCliente = prvIDCliente

            If (.ShowDialog() = Windows.Forms.DialogResult.OK) Then
                prvIDCliente = .IDCliente
                Me.prvIDCliente = .IDCliente
                txtIDCliente.Text = Me.prvIDCliente
                txtNomeCliente.Text = objClientes.selecionarCliente(prvIDCliente).Item("RazaoSocial").ToString
            End If

        End With
    End Sub
End Class
